C-Kermit's major functions are file transfer using the Kermit protocol, automatic dialing, terminal connection, translation of national and international character sets, and script programming for automated communications. C-Kermit is fully documented in the book Using C-Kermit by Frank da Cruz and Christine M. Gianone, Digital Press, Burlington, MA, USA. Digital Press ISBN: 1-55558-108-0; Prentice-Hall ISBN: 0-13-037490-3. Price: US $34.95. In USA, call DECdirect at 1-800-344-4825, refer to order number EY-J896E-DP.
C-Kermit can be used in two "modes" -- remote and local. In remote mode, you connect to the UNIX system from a desktop PC, Macintosh, or workstation and transfer files between your desktop computer and UNIX C-Kermit. In that case, connection establishment (dialing, TELNET connection, etc) is handled by the Kermit program on your desktop computer.
In local mode, C-Kermit establishes a connection to another computer by direct serial connection, by dialing a modem, or by making a network connection. When used in local mode, C-Kermit gives you a terminal connection to the remote computer, using your actual terminal, emulator, or UNIX workstation window or console driver for specific terminal emulation.
C-Kermit also has two types of commands: the familiar UNIX-style command-line arguments, and an interactive dialog with prompt. Command-line arguments give you access to a small but useful subset of C-Kermit's features for terminal connection and file transfer, plus the ability to pipe files into or out of Kermit for transfer.
Interactive commands give you access to dialing, script programming, character-set translation, and in general, detailed control and display of all C-Kermit's features. Interactive commands can also be collected into command files or collected into macros.
C-Kermit should be available as "kermit" somewhere in your PATH, normally as /usr/local/bin/kermit. To start C-Kermit simply type "kermit", possibly followed by command-line options. If there are no "action options" on the command line, C-Kermit starts in interactive mode; you will see a greeting message and then the "C-Kermit>" prompt. If you include action options on the command line, C-Kermit takes the indicated actions and then exits back to UNIX. Either way, C-Kermit executes the commands in its initialization file, .kermrc, in your home directory before it executes any other commands, unless you have included the -Y (uppercase) command-line option, which means to skip the initialization file.
Here is a common scenario for Kermit file transfer:
* Start Kermit on local computer and establish a connection to the
remote computer. If C-Kermit is on your local
computer, use the sequence SET MODEM <modem-name>, SET LINE, SET SPEED, and
DIAL <number> if you are dialing; SET LINE and SPEED for direct connections,
SET NETWORK and SET HOST (or, for TCP/IP, simply TELNET) for network
connections.
* SET any other necessary communication parameters, such as PARITY,
DUPLEX, and FLOW-CONTROL. If you will be communicating with an IBM mainframe
in line-mode (not full-screen mode), give the command DO IBM.
* Give the CONNECT command.
* Log in to the remote computer.
* Start Kermit on the remote computer, give it any desired SET commands
for file, communication, or protocol-related parameters. If you will be
transferring binary files, give the command SET FILE TYPE BINARY to the remote
Kermit.
* Give the remote Kermit the SERVER command.
* Escape back to the Kermit program on your local (desktop) computer.
If your local computer is running C-Kermit, type Ctrl-\ c (Control-backslash
followed by the letter 'c') (on NeXT workstations, use Ctrl-] c). If MS-DOS
or OS/2 Kermit, use Alt-X or Ctrl-] c. Now you should see your local Kermit
program's prompt.
* If you will be transferring binary files, give the command SET FILE
TYPE BINARY to your local Kermit program.
* To get files from the remote computer to your local computer, use GET
followed by the filename. Use SEND followed by the filename to put files
from your local computer to the remote system. You may use "wildcard"
characters such as * and ? in the filenames to specify groups of files.
* When you finish transferring files, and you need to continue your work
on the remote remote computer, type FINISH and then CONNECT. You're now
talking Kermit on the remote computer again. Type EXIT to get back to the
command prompt on the remote system. At the end, logout normally from the
remote computer. Then escape back to Kermit on your local computer, and then
EXIT from the local Kermit program.
* If you don't need to go back to the remote computer again, type the
BYE command to the local Kermit program. This will shut down the remote
Kermit server and terminate (log out) your remote session.
Kermit has extensive built-in help. You can find out what commands exist by typing ? at the beginning of a line. You can type HELP followed by the name of a command for information on it. For commands that take multiple arguments, you can type ? in the middle of the command for more information, and you can also use help with several arguments. E.g. SET has many different things you can set, like SET RECEIVE PACKET-LENGTH 1000. You can type 'SET ?', or 'SET RECEIVE ?', etc. 'HELP SET' talks about the 'SET' command in general, 'HELP SET RECEIVE talks about the SET RECEIVE options.
% A user-defined simple (scalar) variable such as \%a or \%1 & an array reference such as \&a[3] $ an environment variable such as \$(TERM) v (or V) a built-in variable such as \v(time) f (or F) a function such as \fSubstring(\%a,3,2) d (or D) a decimal (base 10) number (1 to 3 digits, 0..255) such as \d27 o (or O) an octal (base 8) number (1 to 3 digits, 0..377) such as \o33 x (or X) a hexadecimal (base 16) number (2 digits, 00..ff) like \x1b \ the backslash character itself b (or B) the BREAK signal (OUTPUT command only) l (or L) a Long BREAK signal (OUTPUT only) a decimal digit (a 1-3 digit decimal number) such as \27 anything else: following character taken literally.Note that numbers turn into the character with that binary code (0-255), so you can use \7 for a bell, \13 for carriage return, \10 for linefeed.
You can use upper- or lower case for commands. Either one will work (but remember that UNIX filenames are case-sensitive). Also, you can abbreviate commands as long as the abbreviation matches only one possibility. Here is a quick summary of C-Kermit's commands. For more information on each, see Using C-Kermit, or type HELP and then the command name.
; Introduce a full-line or trailing comment (also #). ! Run a system command or enter system command interpreter. ASK Prompt the user, store user's reply in a variable. ASKQ Like ASK, but, but doesn't echo (useful for passwords). ASSIGN Assign an evaluated string to a variable or macro. BYE Terminate and log out a remote Kermit server. C Special abbreviation for CONNECT. CD Change Working Directory (also, CWD). CHECK See if a particular feature is built in. CLEAR Clear communication device input buffer. CLOSE Close a log or other local file. COMMENT Introduce a full-line comment. CONNECT Establish a terminal connection to a remote computer. DECLARE Declare an array. DECREMENT Subtract one (or other number) from a variable. DEFINE Define a variable or macro. DELETE Delete a file or files. DIAL Dial a telephone number. DIRECTORY Display a directory listing. DISABLE Disallow access to selected features during server operation. DO Execute a macro ("DO" can be omitted). E-PACKET Send an Error packet. ECHO Display text on the screen. ELSE Used with IF. ENABLE Allow access to selected features during server operation. END A command file or macro. EXIT Exit from the program, closing all open files and devices. FINISH Instruct a remote Kermit server to exit, but not log out. FOR Execute commands repeatedly in a counted loop. G Special abbreviation for GET. GET Get files from a remote Kermit server. GETOK Ask question, get Yes or No answer, set SUCCESS or FAILURE. GOTO Go to a labeled command in a command file or macro. HANGUP Hang up the phone or network connection. HELP Display a help message for a given command. IF Conditionally execute the following command. INCREMENT Add one (or other number) to a variable. INPUT Match characters from another computer against a given text. INTRO Print a brief introduction to C-Kermit. LOG Open a log file -- debugging, packet, session, transaction. MAIL Send a file to other Kermit, to be delivered as e-mail. MSEND Send a list of files to the other Kermit. MSLEEP Sleep for given number of milliseconds. OPEN Open a local file for reading or writing. O Special abbreviation for OUTPUT. OUTPUT Send text to another computer. PAD Command for X.25 PAD (SunLink X.25 only) PAUSE Do nothing for a given number of seconds. PING Check status of remote TCP/IP host. PRINT Print a file on a printer. PUSH Invoke host system interactive command interpreter. PWD Display current working directory. QUIT Same as EXIT. R Special abbreviation for RECEIVE. READ Read a line from a local file. RECEIVE Passively wait for files to arrive. REDIAL The the most recently DIALed number again. REINPUT Reexamine text previously received from another computer. REMOTE Issue file management commands to a remote Kermit server. RENAME Change the name of a file. RETURN Return from a user-defined function. RUN Run a program or system command. S Special abbreviation for SEND. SCRIPT Execute a UUCP-style login script. SEND Send files. SERVER Begin server operation. SET Set various parameters. SHOW Display values of SET parameters. SLEEP Sleep for given number of seconds. SPACE Display current disk space usage. STATISTICS Display statistics about most recent file transfer. STOP Stop executing macro or command file, return to prompt. SUSPEND Suspend Kermit (use only if shell supports job control!). TAKE Execute commands from a file. TELNET Make a TCP/IP TELNET connection to a remote network host. TRANLATE Translate a file's character set. TRANSMIT Upload a file with no error checking. TYPE Display a file on the screen. VERSION Display the program version number on the screen. WAIT Wait for the specified modem signals. WHILE Execute commands repeatedly while a condition is true. WRITE Write text to a local file. XIF Extended IF command. XLATE Synonym for TRANSLATE. XMIT Synonym for TRANSMIT.
ATTRIBUTES Turn Attribute packet processing on or off. BLOCKSIZE, CHARACTER-SET, DATE, DISPOSITION, LENGTH, OS-SPECIFIC, SYSTEM-ID, ALL BLOCK-CHECK Level of file transfer error detection. BUFFERS Size of send and receive packet buffers. CARRIER Treatment of carrier on terminal connections. CASE Treatment of alphabetic case in string comparisons. COMMAND BYTESIZE used between C-Kermit and your keyboard and screen. CONTROL Which control characters to "unprefix" during file transfer. COUNT For counted loops. DEBUG Log or display debugging information. DELAY How long to wait before sending first packet. DIAL Parameters related to dialing. DIAL-COMMAND, DIRECTORY, DISPLAY, HANGUP, INIT-STRING, KERMIT-SPOOF, MNP-ENABLE, SPEED-MATCHING, TIMEOUT DUPLEX Specify which side echoes during CONNECT. ESCAPE Prefix for "escape commands" during CONNECT. FILE Set transfer file parameters: BYTESIZE, CHARACTER-SET, COLLISION, DISPLAY, INCOMPLETE, NAMES, TYPE FLOW-CONTROL Communication line full-duplex flow control. HANDSHAKE Communication line half-duplex turnaround character. HOST Specify network host name. INPUT Control behavior of INPUT command. KEY Key mapping and macros for use in CONNECT mode. LANGUAGE Enable language-specific character-set translations. LINE Serial communication device name. MACRO Control aspects of macro execution. MODEM-DIALER Type of modem-dialer on communication line. NETWORK Network type, e.g. TCP/IP, X.25. PAD X.25 X.3 PAD parameters (SunLink X.25 only). PARITY Communication line character parity. PROMPT The C-Kermit program's interactive command prompt. RECEIVE Parameters for inbound packets. CONTROL-PREFIX, END-OF-PACKET, PACKET-LENGTH, PAD-CHARACTER, PADDING, START-OF-PACKET, TIMEOUT REPEAT Repeat-count compression parameters. RETRY Packet retransmission limit. SEND Parameters for outbound packets. See RECEIVE for subparameters. Normally you set only RECEIVE parameters. Most SEND parameters come automatically from the Kermit on the other end. SERVER Parameters for server operation. TIMEOUT SESSION-LOG File type for session log, text or binary. SPEED Communication line speed, e.g. 2400, 9600. TAKE Control aspects of TAKE file execution. TERMINAL Terminal parameters: BYTESIZE, CHARACTER-SET, CR-DISPLAY, ECHO, LOCKING-SHIFT, NEWLINE-MODE TRANSFER File transfer parameters: CANCELLATION, CHARACTER-SET, LOCKING-SHIFT TRANSMIT Control aspects of TRANSMIT command execution: ECHO, EOF, FILL, LINEFEED, LOCKING-SHIFT, PAUSE, PROMPT UNKNOWN Specify handling of unknown character sets. WINDOW File transfer packet window size. X.25 Specify X.25 connection parameters (SunLink X.25 only).
define sun set speed 9600, set parity none, set duplex full,- set flow xon/xoffYou call a macro by using its name, just like normal commands. You can also call them using the DO command. If you have given the DEFINE command above (or have it in your .kermrc file), then you can type SUN or DO SUN to execute all the commands in the definition.
C-Kermit also lets you define variables. Normal variables look like \%i, where i is a single letter. The alphabetic case doesn't matter. \%a and \%A are the same. Like macros, they are defined by DEFINE or ASSIGN. All values are strings. DEFINE gives a variable a fixed value. ASSIGN computes a value and assigns it to the variable. To see the difference, look at
def \%a Monday def \%b Today is \%a assign \%c Today is \%a def \%a Tuesday echo \%b echo \%cThis will print "Today is Tuesday" then "Today is Monday". The difference is that when defining \%c, the \%a is evaluated at the time of the definition, whereas when defining \%b, the variable name \%a itself is put in the definition. It isn't evaluated until the echo \%b.
There are also arrays, which use \& instead of \%. They are declared by DECLARE, e.g. DECLARE \&A[100]. Elements are referenced with subscripts, which may themselves be variables, and act like simple variables, e.g.
DEFINE \&A[3] TuesdayYou can destroy the array by making it zero size, DECLARE \&A[0]. The first element of an array is [1].
Macros have normal names. No \. You call them by using the name like a command. If you put additional words on the same line as the macro invocation, they become arguments. Inside the macro, you can refer to the arguments as \%1, \%2, etc. For example:
C-Kermit>define bsend set file type binary, send \%1 C-Kermit>define tsend set file type text, send \%1 C-Kermit>bsend kermit C-Kermit>tsend kermit.docThe number of arguments supplied can be referred to as \v(argc). If you call another macro from a macro, the new one gets its own set of arguments, which do not interfere with the previous set.
There are a number of built-in variables, which are referred to by \v(name). They cannot be changed. Type SHOW VARIABLES for a complete list.
\v(argc) number of arguments in current macro \v(args) number of program command-line arguments \v(cmdfile) name of current command file, if any \v(cmdlevel) current command level \v(cmdsource) where command are currently coming from, macro, file, etc. \v(count) current COUNT value \v(cpu) CPU type C-Kermit was built for \v(date) date as 8 Feb 1992 \v(day) day of week \v(directory) current/default directory \v(exitstatus)current EXIT status (0 = good, nonzero = something failed) \v(filespec) filespec given in most recent SEND/RECEIVE/GET command \v(fsize) size of file most recently transferred \v(home) home directory \v(host) computer host name \v(input) current INPUT buffer contents \v(inchar) character most recently INPUT \v(incount) how many characters arrived during last INPUT \v(line) current communications device, set by LINE or HOST \v(local) 0 if in remote mode, 1 if in local mode \v(macro) name of currently executing macro, if any \v(ndate) Current date as 19920208 (yyyymmdd) \v(ntime) Current local time in seconds since midnight \v(platform) Specific machine and/or operating system \v(program) Name of this program ("C-Kermit") \v(return) Most recent RETURN value \v(speed) Current speed, if known, or "unknown" \v(status) 0 or 1 (SUCCESS or FAILURE of previous command) \v(system) UNIX \v(time) time as 13:45:23 (hh:mm:ss) \v(ttyfd) file descriptor of current communication device \v(version) numeric version of Kermit
There are builtin functions, invoked as \Fname(args). Type SHOW FUNCTIONS for a complete list.
\Fcharacter(arg) convert numeric arg to character \Fcode(char) numeric code for character \Fcontents(v) return current definition of variable \Fdefinition(m) return current definition of macro \Feval(expr) evaluate arithmetic expression \Fexecute(m a) execute macro "m" with parameters "a" \Ffiles(f) number of files matching file spec \Findex(a1,a2,a3) position of string a2 in a1, starting at pos a3 \Flength(arg) length of the string "arg" \Fliteral(arg) copy argument literally, no evaluation \Flower(arg) convert to lower case \Flpad(text,n,c) left pad text to length n with char c \Fmax(a1,a2) max of two numbers \Fmin(a1,a2) min of two numbers \Fnextfile() next file name from list in last \Ffiles \Frepeat(a1,a2) repeat a1 a2 times \Freplace(a1,a2,a3) replace a2 by a3 in a1 \Freverse(arg) reverse characters in arg \Fright(a1,a2) rightmost a2 characters of string a1 \Frpad(text,n,c) right pad text to length n with char c \Fsubstr(a1,a2,a3) substring of a1, starts at a2, length a3 \Fupper(arg) convert to upper caseEval allows the following operators in the expression. The expression can contain variables. Precedences are shown as numbers, 1 is highest precedence, 6 is lowest.
( ) 1 parentheses n ! 2 factorial ~ n 3 logical NOT - n 4 negative n ^ n 4 power n * n 5 times n / n 5 division n % n 5 modulus n & n 5 logical AND n + n 6 plus n - n 6 minus n | n 6 logical OR n # n 6 exclusive OR n @ n 6 greatest common divisor
Typically you run Kermit without any arguments, and use a combination of .kermrc and interactive commands. However it is possible to put options on the command line. This is normally used for scripts. In this case, Kermit is invoked as follows:
kermit [-x arg [-x arg]...[-yyy]..]] -x is an option requiring an argument, -y an option with no argument. Actions: -s files send files -s - send files from stdin -r receive files -k receive files to stdout -x enter server mode -f finish remote server -g files get remote files from server (quote wildcards) -a name alternate file name, used with -s, -r, -g -c connect (before file transfer), used with -l and -b -n connect (after file transfer), used with -l and -b Settings: -l line communication line device -j host network host name -q quiet during file transfer -i binary file transfer -b bps line speed, e.g. 1200 -m name modem type -p x parity, x = e,o,m,s, or n -t half duplex, xon handshake -e n receive packet length -v n window size -w write over files Other: -y name alternate init file name -Y Skip init file -d log debug info to debug.log -S Stay, don't exit, after action -C "cmds" Interactive-mode commands If no action command is included, enter interactive dialog.